https://github.com/dvillasanao/IML_2010_2020" />

Índice de marginación a nivel localidad

El índice de marginación elaborado por el Consejo Nacional de Población (CONAPO) se ha convertido en una herramienta esencial para analizar y medir las condiciones socioeconómicas en México, particularmente a nivel loacalidad. Este índice, desde su primera publicación en 1990, ha sido fundamental para identificar y cuantificar las desigualdades y disparidades que existen entre diferentes regiones del país.

Historia y Evolución:

  • Décadas de 1970 y 1980: Comienzo de los primeros ejercicios de medición de desigualdad.
  • 1990: Primera publicación del índice de marginación utilizando el Análisis de Componentes Principales (ACP). Aunque útil, este método no permitía comparaciones temporales.
  • Demanda de Comparabilidad: La necesidad de evaluar la evolución de la marginación a lo largo del tiempo llevó a una revisión metodológica.

Cambio Metodológico:

  • Nueva Técnica: En 2020, se adoptó la técnica de Distancias Ponderadas al Cuadrado para mejorar la comparabilidad temporal y la precisión de los datos.
  • Ajustes en Indicadores: Se realizaron modificaciones para alinear el índice con las recomendaciones de organismos nacionales e internacionales.
  • Método de Estratificación: Se continuó utilizando la técnica de estratificación de Dalenius y Hodges para el cálculo de los estratos del índice.

Impacto y Futuro:

El índice de marginación tiene como objetivo proporcionar información objetiva y cuantitativa sobre las disparidades socioeconómicas entre los municipios. Esta información es crucial para la toma de decisiones en políticas públicas, permitiendo una asignación más efectiva de recursos y esfuerzos para reducir la marginación y promover un desarrollo equitativo.

Las variables consideradas en el índice incluyen el nivel educativo, acceso a servicios de salud, infraestructura básica, vivienda, ingresos y ocupación. Estas variables se agrupan en dimensiones que reflejan el grado de marginación de cada municipio. Un índice de marginación más bajo indica mejores condiciones de desarrollo humano y bienestar.

A lo largo de las décadas, el índice ha evolucionado significativamente en términos de metodología y actualización de datos, gracias a los avances tecnológicos y el acceso a información geoespacial. Desde su creación hasta el presente, el índice ha permitido identificar tendencias y cambios en las condiciones socioeconómicas de las regiones del país, destacando tanto áreas de mejora como zonas que aún enfrentan desafíos considerables en términos de marginación y pobreza.

Este índice sigue siendo una herramienta crucial para identificar las mejores prácticas y generar estrategias de intervención focalizadas en las áreas que más lo necesitan, con el fin de mejorar las condiciones de vida de la población mexicana.

Base de datos de los tres años se encuentran disponibles en la página oficial de CONAPO

Datos abiertos de México datos.gob.mx

Publicación Índice De Marginación Por Entidad Federativa Y Municipio 2020.

Índice de marginación a nivel estatal Bookdown
Índice de marginación a nivel municipal Bookdown
Índice de marginación a nivel localidad Bookdown
Índice de marginación a nivel AGEB Bookdown
Índice de marginación a nivel Colonia Bookdown

Nacional: Población y unidades geograficas según el índice de marginación, 2010-2020
Grados 2010 2020
Población 2010 Localidades Población 2020 Localidades
Muy alto 906 272 12 926 1 181 937 13 256
Alto 3 384 542 19 028 3 485 906 15 985
Medio 7 523 759 26 543 7 774 958 25 294
Bajo 15 663 183 30 119 18 152 743 31 615
Muy bajo 84 807 374 20 930 95 385 177 24 089
Total 112 285 130 109 546 125 980 721 110 239

Indicadores simples

Porcentaje de población analfabeta de 15 años o más \((I_{1}^{i})\)

El indicador se obtiene dividiendo el monto de población de 15 años o más que declaró no saber leer y escribir un recado, entre la diferencia de la población total de 15 años o más y aquellos que no especificaron su condición de alfabetismo:

\[I_{1}^{i}=\frac{PAN_{15+}^{i}}{P_{15+}^{i}- PNEALF_{15+}^{i}}×100\]

donde:

\(PAN_{15+}^{i}\): es la población de 15 años o más analfabeta,
\(P_{15+}^{i}\): es la población total de 15 años o más, y
\(PNEALF_{15+}^{i}\): es la población de 15 años o más que no especificó su condición de alfabetismo.

Porcentaje de población de 15 años o más sin educación básica \((I_{2}^{i})\)

El indicador mide la magnitud de la población sin educación básica completa. Su cálculo se realiza en dos etapas. En la primera, la población que no especificó su último grado aprobado en secundaria o en estudios técnicos o comerciales con primaria terminada, se distribuye entre la población que aprobó entre uno y dos grados en estos mismos niveles educativos, aplicando la siguiente fórmula:

\[{PSI}_{15+}^{i}={PSCI}_{15+}^i+\left[\frac{{PSCI}_{15+}^i}{{PSCI}_{15+}^i+{PSCC}_{15+}^i}\times{PNEGS}_{15+}^i\right]\]

donde:

\(P{SI}_{15+}^{i}\): es la población de 15 años o más que aprobó entre el primer y segundo grado de secundaria o estudios técnicos o comerciales con primaria terminada con los no especificados de estos niveles educativos ya distribuidos,
\({PSCI}_{15+}^{i}\): es la población de 15 años o más que declaró haber aprobado entre el primer y segundo grado de secundaria o estudios técnicos o comerciales con primaria terminada,
\({PSCC}_{15+}^{i}\): es la población de 15 años o más que cursó el tercer grado en secundaria o tres o cuatro grados en estudios técnicos o comerciales con primaria terminada, y
\({PNEGS}_{15+}^{i}\): es la población de 15 años o más que no especificó su último grado cursado en secundaria o en estudios técnicos o comerciales con primaria terminada.

Con el dato de la población con estudios truncos en secundaria o en estudios técnicos o comerciales con primaria terminada, se procedió a calcular el indicador de porcentaje de población sin educación básica. Este porcentaje se calcula dividiendo la población de 15 años o más sin educación básica, entre la diferencia de la población total de 15 años o más y aquellos que no especificaron su nivel educativo:

\[I_{2}^{i}=\frac{{PSIN}_{15+}^i+{PPI}_{15+}^i+{PSI}_{15+}^i}{P_{15+}^i-{PNEIN}_{15+}^i}\times100\]

donde:

\({PSIN}_{15+}^{i}\): es la población de 15 años o más sin instrucción,
\({PPI}_{15+}^{i}\): es la población de 15 años o más con algún grado en educación primaria,
\({PSI}_{15+}^{i}\): es la población de 15 años o más con nivel incompleto de secundaria o estudios técnicos o comerciales con primaria terminada,
\(P_{15+}^{i}\): es la población total de 15 años o más, y
\({PNEIN}_{15+}^{i}\): es la población de 15 años o más que no especificó su nivel de instrucción.

Porcentaje de ocupantes en viviendas particulares sin drenaje ni sanitario \((I_{3}^{i})\)

Este porcentaje se obtiene al dividir el número de ocupantes de viviendas particulares sin drenaje ni sanitario, entre el número de ocupantes en viviendas particulares, menos el número de ocupantes de viviendas particulares en donde no se especificó la disponibilidad de drenaje ni sanitario:

\[I_{3}^{i}=\frac{{OVSDS}^{i}}{{OVP}^{i}-{ONEDS}^{i}}\times100\]

donde:

\({OVSDS}^{i}\): son los ocupantes de viviendas particulares sin disponibilidad de drenaje ni sanitario,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONEDS}^{i}\): son los ocupantes de viviendas particulares en donde no se especificó la disponibilidad de drenaje ni sanitario.

Porcentaje de ocupantes en viviendas particulares sin energía eléctrica \((I_{4}^{i})\)

Este indicador se obtiene al dividir el número de ocupantes de viviendas particulares sin disponibilidad de energía eléctrica, entre el número de ocupantes en viviendas particulares menos el número de ocupantes de viviendas particulares en donde no se especificó la existencia de luz eléctrica:

\[I_{4}^{i}=\frac{{OSEE}^i}{{OVP}^i-{ONEEE}^i}\times100\]

donde:

\({OSEE}^{i}\): son los ocupantes de viviendas particulares sin disponibilidad de energía eléctrica,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONEEE}^{i}\): es el número de ocupantes de viviendas particulares en donde no se especificó la disponibilidad de energía eléctrica.

Porcentaje de ocupantes en viviendas particulares sin agua entubada \((I_{5}^{i})\)

Para obtener este indicador se divide el número de ocupantes en viviendas particulares que no disponen de agua entubada, entre la diferencia del total de ocupantes en viviendas particulares y el total de ocupantes en viviendas en donde no se especificó la disponibilidad de agua entubada:

\[I_{5}^{i}=\frac{{OSAE}^i}{{OVP}^i-{ONEAE}^i}\times100\]

donde:

\({OSAE}^{i}\): son los ocupantes de viviendas particulares sin disponibilidad de agua entubada,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONEAE}^{i}\): son los ocupantes de viviendas particulares en donde no se especificó la disponibilidad de agua entubada.

Porcentaje de ocupantes en viviendas particulares con piso de tierra \((I_{6}^{i})\)

En este indicador se identifican los ocupantes de viviendas particulares con piso de tierra y se divide entre el total de ocupantes en viviendas particulares, menos el número de ocupantes de viviendas particulares en donde no se especificó el material predominante en pisos:

\[I_{6}^{i}=\frac{{OPT}^i}{{OVP}^i-{ONEMP}^i}\times100\]

donde:

\({OPT}^{i}\): son los ocupantes de viviendas particulares con piso de tierra,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONEMP}^{i}\): son los ocupantes de viviendas particulares en las que no se especificó el material predominante en pisos.

Porcentaje de ocupantes en viviendas particulares con hacinamiento \((I_{7}^{i})\)

El procedimiento para el cálculo de este indicador constó de dos etapas. Primero, en cada vivienda particular habitada se dividió el número de ocupantes entre el número de cuartos dormitorio, para identificar las viviendas con hacinamiento:

\[OVHAC=\frac{OVP}{CDVP}\] donde:

\(VHAC\): es la vivienda con hacinamiento,
\(OVP\): es el número de ocupantes que residen habitualmente una vivienda particular, y
\(CDVP\): es el número de cuartos dormitorio en una vivienda particular.

En la segunda fase de cálculo, se dividió el número de ocupantes en viviendas particulares con hacinamiento, entre el total de ocupantes en viviendas particulares habitadas menos el número de ocupantes en viviendas particulares habitadas donde no se especificó el número de cuartos dormitorio:

\[I_{7}^{i}=\frac{O{VHAC}^i}{{OVP}^i-{ONECD}^i}\times100\]

donde:

\({OVHAC}^{i}\): son los ocupantes en viviendas particulares con hacinamiento,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONECD}^{i}\): son los ocupantes en viviendas particulares en donde no se especificó el número de cuartos dormitorio.

Porcentaje de ocupantes en viviendas particulares sin refrigerador \((I_{8}^{i})\)

En este indicador se identifican los ocupantes en viviendas particulares que no disponen de refrigerador y se divide entre el total de ocupantes en viviendas particulares menos los ocupantes en viviendas particulares que no especificaron la disponibilidad de refrigerador:

\[I_{8}^{i}=\frac{{OSR}^i}{{OVP}^i-{ONER}^i}\times100\]

donde:

\({OSR}^{i}\): son los ocupantes de viviendas particulares sin disponibilidad de refrigerador,
\({OVP}^{i}\): es el total de ocupantes en viviendas particulares, y
\({ONER}^{i}\): son los ocupantes de viviendas particulares en donde no se especificó la disponibilidad de refrigerador.

Indicadores simples

Indicadores <- c(
                 'Porcentaje de población de 15 años o más analfabeta', 
                 'Porcentaje de población de 15 años o más sin educación básica',
                 'Porcentaje de ocupantes en viviendas sin drenaje ni excusado',
                 'Porcentaje de ocupantes en viviendas sin energía eléctrica', 
                 'Porcentaje de ocupantes en viviendas sin agua entubada', 
                 'Porcentaje de viviendas con algún nivel de hacinamiento',
                 'Porcentaje de ocupantes en viviendas con piso de tierra',
                 'Porcentaje de ocupantes en viviendas sin refrigerador'
                 )

Base de datos

Se define un vector llamado tablas que contiene los años 2010 y 2020 como cadenas de texto. Este vector se utilizará para iterar y cargar las bases de datos correspondientes a esos años.

Definición de tablas

tablas <- c("2010", "2020")

Se carga la base de datos para los 3 años

Dentro del iterador for(), para cada año se construye el nombre del archivo de datos:

  • Obtención de la tabla: get(paste0("tabla_",i)) obtiene la tabla cargada previamente (donde el nombre de cada tabla cargada es tabla_2010, tabla_2020, etc.).
  • Renombrando de la columna: rename("ANIO" = "AÑO") cambia el nombre de la columna AÑO a ANIO.
  • Filtrado de datos: filter(NOM_ENT != "Nacional") elimina las filas donde la columna NOM_ENT tiene el valor “Nacional”.
  • Conversión de la columna a factor: dplyr::mutate(ANIO = as.factor(.$ANIO)) convierte la columna ANIO en un factor.
for(i in tablas){
load(file = paste0(here::here(), "/Bases/IML_", i, ".RData")) 
}

##Se cambia el nombre de la columna año, para evitar problemas de puntuación
## Se cambia la variable año a factor
for(i in tablas){
assign(paste0("tabla_", i), get(paste0("tabla_", i)) %>% 
                             rename("ANIO" = "AÑO") %>%
                              filter(NOM_ENT != "Nacional") %>%
                               dplyr::mutate(ANIO = as.factor(.$ANIO)))
}
Indicadores simples de marginación
2020
CVE_LOC ENT NOM_ENT MUN NOM_MUN LOC NOM_LOC POB_TOT AÑO ANALF SBASC OVSDE OVSEE OVSAE OVPT OVHAC OVSREF
010010001 01 Aguascalientes 001 Aguascalientes 0001 Aguascalientes 863 893 2020 1.43 19.16 0.01 0.08 0.13 0.45 14.47 3.53
010010096 01 Aguascalientes 001 Aguascalientes 0096 Agua Azul 41 2020 6.45 51.61 7.32 0.00 29.27 0.00 14.63 4.88
010010106 01 Aguascalientes 001 Aguascalientes 0106 Arellano 1 169 2020 7.08 39.10 0.86 0.00 0.60 0.77 26.01 7.87
010010112 01 Aguascalientes 001 Aguascalientes 0112 Bajío los Vázquez 41 2020 10.34 65.52 0.00 0.00 0.00 0.00 12.20 0.00
010010120 01 Aguascalientes 001 Aguascalientes 0120 Buenavista de Peñuelas 1 054 2020 6.42 35.66 0.48 0.10 0.38 0.38 26.43 5.04
010010121 01 Aguascalientes 001 Aguascalientes 0121 Cabecita 3 Marías (Rancho Nuevo) 192 2020 6.52 41.30 0.00 0.00 0.00 2.60 24.48 0.00
010010125 01 Aguascalientes 001 Aguascalientes 0125 Cañada Grande de Cotorina 493 2020 3.96 25.61 2.24 0.81 0.00 1.02 36.66 6.31
010010126 01 Aguascalientes 001 Aguascalientes 0126 Cañada Honda [Estación] 536 2020 3.49 28.15 0.75 0.93 0.75 1.31 16.60 8.77
010010127 01 Aguascalientes 001 Aguascalientes 0127 Los Caños 1 225 2020 3.85 47.83 1.39 0.33 1.22 0.57 18.86 4.08
010010128 01 Aguascalientes 001 Aguascalientes 0128 El Cariñán 256 2020 5.95 35.14 0.00 0.00 0.00 0.00 28.12 2.34
010010135 01 Aguascalientes 001 Aguascalientes 0135 El Cedazo (Cedazo de San Antonio) 322 2020 7.69 29.41 3.42 4.04 8.39 0.00 29.19 14.29
010010138 01 Aguascalientes 001 Aguascalientes 0138 Centro de Arriba (El Taray) 1 172 2020 3.39 58.28 0.43 0.00 0.17 1.62 28.33 3.75
010010139 01 Aguascalientes 001 Aguascalientes 0139 Cieneguilla (La Lumbrera) 997 2020 8.77 57.62 0.10 0.60 1.10 2.61 22.27 7.92
010010141 01 Aguascalientes 001 Aguascalientes 0141 Cobos 11 2020 0.00 37.50 0.00 0.00 0.00 45.45 0.00 0.00
010010144 01 Aguascalientes 001 Aguascalientes 0144 El Colorado (El Soyatal) 468 2020 2.42 39.09 1.28 0.43 3.85 0.43 26.50 1.71
010010146 01 Aguascalientes 001 Aguascalientes 0146 El Conejal 1 081 2020 2.55 44.30 0.28 0.00 0.75 0.00 26.86 2.45
010010157 01 Aguascalientes 001 Aguascalientes 0157 Cotorina de Abajo 55 2020 5.71 45.71 0.00 0.00 5.45 3.64 0.00 3.64
010010162 01 Aguascalientes 001 Aguascalientes 0162 Coyotes 318 2020 5.61 28.97 0.00 0.00 2.20 1.26 31.76 11.32
010010170 01 Aguascalientes 001 Aguascalientes 0170 Cuauhtémoc (Las Palomas) 468 2020 2.60 41.33 1.75 0.00 4.17 2.85 24.12 9.43
010010171 01 Aguascalientes 001 Aguascalientes 0171 Los Cuervos (Los Ojos de Agua) 419 2020 10.00 45.67 0.24 0.48 0.24 1.19 29.12 1.19
010010183 01 Aguascalientes 001 Aguascalientes 0183 Los Dolores 11 2020 0.00 42.86 0.00 63.64 63.64 0.00 27.27 63.64
010010190 01 Aguascalientes 001 Aguascalientes 0190 El Duraznillo 354 2020 10.78 49.57 0.85 0.00 0.00 0.85 34.75 5.93
010010191 01 Aguascalientes 001 Aguascalientes 0191 Los Durón 144 2020 13.68 52.63 0.69 0.00 0.00 0.00 33.33 0.00
010010209 01 Aguascalientes 001 Aguascalientes 0209 La Fortuna 37 2020 13.64 68.18 0.00 0.00 0.00 10.81 45.95 10.81
010010212 01 Aguascalientes 001 Aguascalientes 0212 Lomas del Gachupín 27 2020 4.35 8.70 0.00 0.00 0.00 0.00 0.00 14.81

Análisis de correlaciones

La función corrplot en R es utilizada para crear matrices de correlación visualmente atractivas y fáciles de interpretar. Esta función es parte del paquete corrplot, que proporciona herramientas para visualizar y analizar matrices de correlación.

La matriz de correlación es una tabla que muestra las correlaciones entre pares de variables. En análisis de datos, la correlación se utiliza para medir la relación entre dos variables. Puede ser útil para comprender cómo se relacionan diferentes variables entre sí y cómo afectan a otras variables en un conjunto de datos.

col2 <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7", "#FFFFFF", "#D1E5F0", "#92C5DE","#4393C3", "#2166AC", "#053061"))
par(mfrow = c(1,2), family = "Century Gothic", mar = c(0.5, 0, 0, 0), cex.main = 3, col.main = "#053061")
#Análisis de correlaciones
p <- lapply(1:2, function(i){ 
                  x <- cor(get(paste0("tabla_",tablas[i]))[,10:17]) 
                  corrplot(x,
                           title = paste(tablas[i]),
                            type = "upper",
                             method = "color",
                              col = col2(100),
                               tl.col = "blue4",
                                tl.offset = 0.1,
                                 tl.cex = 3,
                                  tl.srt = 90,
                                   cl.align.text = "c",
                                    number.cex = 2,
                                     cl.cex = 2.5,
                                      addCoef.col = "white", # Add coefficient of correlation
                                       mar = c(20, 0, 2.5, 0))
}
)

Método de Distancias \(DP2\)

José Bernardo Pena Trapero: Problemas de la medición del bienestar y conceptos afines (1977)

Los métodos de distancias son enfoques utilizados para medir el bienestar o la calidad de vida de las personas a través de la comparación de diferentes dimensiones o indicadores. Estos métodos se basan en la idea de que el bienestar se puede evaluar considerando la distancia o diferencia entre los individuos en términos de ciertos atributos o variables relevantes.
La Distancia \(DP_{2}\), es un indicador sintético, definido por el profesor J. Bernardo Pena Trapero, basado en el concepto de distancia, construido, como su nombre indica para medir distancias entre unidades geográficas, o bien, también se puede aplicar a comparaciones tanto cronológicas como interespaciales.

Definición

Sean:

\(\:\:\circ\:r\), el número de municipios;
\(\:\:\circ\:n\), el número de variables;
\(\:\:\circ\:x_{ij}\), el valor de la variable j en el municipio \(i\);
\(\:\:\circ\:\sigma_{j}\), La Desviación Típica de la variable \(j\);
\(\:\:\circ\:R^{2}_{i,i-1,...,1}\) el Coeficiente de Determinación en la Regresión de \(X_{i}\) sobre \(X_{i-1},X_{i-2},...,X_{1}\).

Se define la \(Distancia-P_{2}\) de la forma:

\[\begin{align} DP_{2}=\sum^{n}_{i=1}\frac{d_{i}}{\sigma_{i}}(1-R^{2}_{i,i-1,...,1})\:\:;\;\;con \:\:R^{2}_{1}=0 \end{align}\]

Donde:

\(\:\:\circ\:d_{i} = d_{i}(r,*) = |x_{ri}-x_{*i}|\) |: es la distancia de la j-ésima variable del municipio \(r\) con respecto a la base de referencia \(x_{*}=(x_{*1}, x_{*2},..., x_{*n})\). Tomando como punto de referencia el valor mínimo de la variable, siendo esta la peor situación teórica,

\(\:\:\circ\:\sigma_{i}\) : es la desviación estándar de la variable \(𝑗\),

\(\:\:\circ\:R^{2}_{i,i-1,...,1}\): es el coeficiente de determinación de la regresión del indicador parcial \(𝑗\) con respecto a los otros indicadores \((𝑗−1,𝑗−2,…,1)\). Esta expresión es parte de la varianza del indicador parcial \(I_{j}\) que se explica linealmente por el resto de los indicadores parciales,

\(\:\:\circ\:(1-R^{2}_{i,i-1,...,1})\)): es el factor corrector que evita la duplicidad, al eliminar la información parcial de los indicadores ya contenidos en los indicadores precedentes, y

\(\:\:\circ\:R^{2}_{1}=0\); porque la primera componente aporta toda la información y al no existir un componente previo su ponderación es la unidad.

El \(DP_{2}\) cumple con las siguientes propiedades: no negatividad, homogeneidad, conmutatividad, desigualdad triangular, existencia y determinación, monotonía, unicidad, transitividad, no duplicidad de información, invariancia al cambio de origen y/o de escala en las unidades y exhaustividad.

El orden de entrada de las variables

# Se multiplica por -1, debido a que son indicadores de carencia 
for(i in tablas){   
  assign(paste0("DP2_datos_", i), (-1 * get(paste0("tabla_", i))[10:17]))
}

Para asegurar las propiedades del indicador sintético, un aumento en los indicadores simples implica un aumento en la carencia de los servicios, lo que implicaría una disminución de la calidad de vida, por lo que se multiplica cada indicador por -1, de esta forma, un aumento en la variable supone una mejora en la calidad de vida.

Base de referencia

Se define al valor de referencia para cada uno de los indicadores parciales, con la finalidad de hacer comparaciones entre las diferentes unidades espaciales (Localidades). Siendo este el valor mínimo de cada indicador simple como referencia, representado como la “situación no deseada”. Como resultado, un valor alto implicaría una distancia alejada con respecto a una situación teórica “situación no deseada”. Por lo tanto \(d_{ij}\) mide la distancia entre el indicador parcial \(j\) en la entidad \(i\) y su valor de referencia.

Se toma como base de referencia el valor del mínimo del 2010 - 2020, ya que este tipo de cambio permite la comparabilidad en el tiempo.

#Base de referencia 2010 - 2020
for(i in tablas){
assign(paste0("minRV_", i), setNames(c(-100, # ANALF
                                       -100, # SBASC
                                       -100, # OVSDE
                                       -100, # OVSEE
                                       -100, # OVSAE
                                       -100, # OVPT
                                       -100, # OVHAC
                                       -100), # OVSREF
                              nm = c("ANALF", "SBASC", "OVSDE", "OVSEE", "OVSAE", "OVPT", "OVHAC", "OVSREF")))
}
Base de referencia
AÑO ANALF SBASC OVSDE OVSEE OVSAE OVPT OVHAC OVSREF
2010 - 2020 −100.00 −100.00 −100.00 −100.00 −100.00 −100.00 −100.00 −100.00

Método de Distancia \(DP_{2}\)

require(p2distance)
##Calculo del Método de Distancias DP2
for(i in tablas){
assign(paste0("ind_", i), p2distance(matriz = as.matrix(get(paste0("DP2_datos_", i))), 
                                      reference_vector = get(paste0("minRV_", i)), 
                                       iterations = 50))
}

Total de iteraciones

iteration <- lapply(1:2, function(x) get(paste0("ind_", tablas[x]))[["iteration"]])
Número de iteraciones
AÑO Iteraciones
2010 2
2020 2

Se anexan los resultados a las bases de datos original

for(i in tablas){
assign(paste0("DP2_", i), cbind(get(paste0("tabla_", i)), get(paste0("ind_", i))[["p2distance"]]))
}

# Se cambian los nombres de las columnas 
for(i in 1:2){
  columns = get(paste0("DP2_", tablas[i]))
  colnames(columns) = c("CVE_LOC", "ENT", "NOM_ENT", "MUN", "NOM_MUN", "LOC", "NOM_LOC", "POB_TOT", "ANIO",
                        "ANALF", "SBASC", "OVSDE", "OVSEE", "OVSAE", "OVPT", "OVHAC", "OVSREF",
                        paste0("IM_", tablas[i]))
  assign(paste0("DP2_", tablas[i]), columns)
  rm(columns)
}

Método de estratificación

Identificación de datos atípicos

Para hacer cumplir la definición de los límites en el método de estratificación [véase: Método de estratificación de Dalenius & Hodges] y el número óptimo de clases basados en la media aritmética, es importante la identificación de datos atípicos porque podrían ocasionar resultados poco adecuados. Para contrarrestar este problema, Hubert y Vandervieren (2007) proponen el método de caja, el cual toma en cuenta el grado de asimetría de un conjunto de datos.

\[\left[Q_{1} - 1.5e^{-4MC} IQR; \hspace{0.5cm} Q_{3} + 1.5e^{-4MC} IQR \right] \text{para } MC \geq 0\] \[\left[Q_{1} - 1.5e^{-3MC} IQR; \hspace{0.5cm} Q_{3} + 1.5e^{-3MC} IQR \right] \text{para } MC < 0\] donde:
\(\circ \:𝑄_{1}\) 𝑦 \(𝑄_{3}\): hacen referencia al primer y tercer cuartil, respectivamente; la diferencia entre estos dos valores da como resultado el valor de espacio intercuartil (\(𝐼𝑄𝑅\)), y
\(\circ \:𝑀𝐶 (𝑚𝑒𝑑𝑐𝑜𝑢𝑝𝑙𝑒)\): cuantifica el grado de asimetría de una muestra univariable \({𝑥_1,𝑥_2,… ,𝑥_𝑛}\).

Se identifican los valores atípicos para cada conjunto de datos para cada año.

  • Se itera sobre cada elemento de la lista tablas que corresponden a los años 2010 y 2020.
  • Se calculan los estadísticos de la columna del índice de marginación para cada conjunto de datos \(DP2_{i}\) correspondientes al año y se asigna el resultado a una nueva variable denominada \(outliers_i\).
for(i in tablas){
  assign(paste0("outliers_", i), boxplot.stats(get(paste0("DP2_", i))[,18]))
}

Se crea un data.frame que contiene el número de valores atípicos, su rango y el límite inferior para cada conjunto de datos.

Límites para el cálculo de estratificación a nivel localidad, 2010
Valores atípicos Rango
Mínimo Límite
1487 0.000 4.076
Límites para el cálculo de estratificación a nivel localidad, 2020
Valores atípicos Rango
Mínimo Límite
5364 0.000 11.698

Se identifican los casos extremos en el índice de marginación y se aplica el método de caja propuesto por Hubert y Vandervieren, concluyendo los límites con los que se debe trabajar.

Se añade una nueva columna IM_out. Esta columna se calcula usando if_else, de la siguiente manera:

  • Si el valor de IM es mayor o igual al límite inferior de los valores no considerados outliers (get(paste0("outliers_", i))$stats[1]), entonces IM_out toma el valor de IM.
  • Si el valor de IM es menor que el límite inferior, entonces IM_out toma el valor del límite inferior, eliminando así los outliers.
## Se crea un índice ficticio, en la que se quitan los outliers   
for(i in tablas){
assign(paste0("DP2_", i), get(paste0("DP2_", i)) %>% 
                            mutate(IM = get(paste0("IM_", i))) %>%
                             mutate(IM_out = if_else(.$IM >= get(paste0("outliers_", i))$stats[1],
                                                      .$IM,
                                                        get(paste0("outliers_", i))$stats[1])) %>%
                              select(-paste0("IM_", i))
  )
}

Método de estratificación de Dalenius & Hodges

strata.cumrootf: cumulative root frequency method by Dalenius and Hodges (1959).

Con la obtención del índice de marginación a través del método DP2, los valores se clasificaron en cinco categorías ordinales con el método de Dalenius y Hodges (1959), para obtener el grado de marginación. Este método forma estratos de manera que la varianza sea mínima al interior de cada estrato y máxima entre cada uno de ellos, es decir, son lo más homogéneos posibles. Este procedimiento utiliza la raíz de las frecuencias acumuladas para la construcción de los estratos, por lo que se lleva a cabo para la división de la población en el estrato L. Esta es una solución aproximada de Dalenius y Hodges (1959) a las ecuaciones de Dalenius (1950). De acuerdo con Gunning y Horgan (2004), el límite superior de cada estrato se determinó con la siguiente expresión:

\[Q = \frac{1}{L}\sum^{J}_{i=1}{\sqrt{f_{i}}}\]

Sea un conjunto de estratos determinados por su límite superior,

\[Q,\ 2Q,\ \ldots,\ \left(L-1\right)Q,\ (L)Q.\] donde:

\(\circ \:J\): es el número de clases dentro del grupo de la variable ordenada X,
\(\circ \:f_{i}\ \in(1,\ \ldots, J)\): es la frecuencia en cada clase \(J\), y
\(\circ \:L\): es el número de estratos.

La eficiencia del método de la raíz de las frecuencias acumuladas depende principalmente del número de clases dentro del grupo de la variable ordenada. Sin embargo, no hay un procedimiento estándar sobre cómo elegir el mejor valor para el número de clases, siendo esto una limitante del método de Dalenius y Hodges. Para medir el efecto del número de clases en la varianza de cada estrato se recurrió a un método iterativo para obtener un criterio de agrupación óptimo.

Para establecer los límites de los estratos \((b_{1},\ \ldots,\ b_{L})\) que minimicen la varianza del estimador, se utiliza la asignación de Neyman para determinar el tamaño de muestra óptimo. Sea la varianza del estimador:

\[V\left({\bar{x}}_{st}\right)=\ \sum_{h}\left(\frac{N_h}{N}\right)^2\frac{S_h^2}{n_h}\ \] donde:

\(\circ \: S_{h}^{2}\): es la varianza poblacional en el estrato \(h\),
\(\circ \:n_{h}\): es el tamaño de muestra en el estrato \(h\) utilizada por la asignación de Neyman, y \(\circ \:N_{h}\): es el total de elementos en el estrato \(h\), sea \(N=\sum_{h=1}^{L}{N_{h}}\).

Si se asume que la distribución dentro de cada estrato se distribuye aproximadamente de manera uniforme, los límites se obtienen tomando intervalos iguales en la función de la raíz de las frecuencias acumuladas. Los límites se resuelven de manera iterativa:

\[\frac{S_h^2+(b_h-{\bar{X}}_h)2}{S_h}=\frac{S_{h+1}^2+(b_h-{\bar{X}}_{h+1})2}{S_{h+1}}\ para\ h=1,\ \ldots.\ ,\ L-1\] donde:

\(\circ \: b_{h}\): es el límite superior en el estrato \(h\),
\(\circ \: {\bar{X}}_{h}\): es la media poblacional en el estrato \(h\), y
\(\circ \: S_{h}^{2}\): es la varianza poblacional en el estrato \(h\).

El requisito de precisión, generalmente se establece cuando el coeficiente de variación sea igual a un nivel especificado entre 1 y 10 por ciento (Hidiroglou y Kozak, 2018).

Número óptimo de clases del método de Dalenius & Hodge

alloc lista que especifica el esquema de asignación. La lista debe contener 3 números para los 3 exponentes q1, q2 y q3 en el esquema de asignación general (ver paquete de stratification). El valor predeterminado es la asignación de Neyman (q1 = q3 = 0.5 y q2 = 0)

A continuación, se realiza un análisis de estratificación sobre los diferentes años, usando la función strata.cumrootf(), almacenando los resultados de errores estándar, medias y varianzas en matrices que luego se guardan en listas.

iteraciones <- 1000
start.time <- Sys.time()
DH_Localidad <- list()
stderr <- list()
mean <- list()
var <- list()
for(j in 1:2){
i <- 1
  sd <- matrix(NA, nrow = (iteraciones), ncol = 3)
  meanh <- matrix(NA, nrow = (iteraciones), ncol = 6)
  varh <- matrix(NA, nrow = (iteraciones), ncol = 6)
 for(n in seq(5, (iteraciones), 1)){
      DH_Localidad[[paste(tablas[j])]][[n]] <- strata.cumrootf(x = get(paste0("DP2_", tablas[j]))[,19], CV = 0.05, Ls = 5, alloc = c(0.5, 0, 0.5), nclass = n)
      cum <- DH_Localidad[[paste(tablas[j])]][[n]]
      sd[i,] <-  c(n, cum$stderr, cum$CV)
      meanh[i,] <- c(n, cum$meanh)
      varh[i,] <-  c(n, cum$varh)
      i <- i + 1
}
  stderr[[j]] <- sd
  mean[[j]] <- meanh
  var[[j]] <- varh
}

for(i in 1:2){
  colnames(stderr[[i]]) <- c("n", "sderr", "CV")
}

end.time <- Sys.time()
time.taken <- round(end.time - start.time, 2)
time.taken

Número óptimo de clases

Se toma cada matriz resultante de errores estándar de la lista stderr, y luego selecciona la fila que tiene el coeficiente de variación (CV) más bajo. Estos resultados se almacenan en la lista min.strata, la cual contendrá los data.frames correspondientes a las filas con el menor CVpara cada uno de los tres conjuntos de datos en stderr.

min.strata <- NULL
for(i in 1:2){
  min.strata[[i]] <- stderr[[i]] %>%
                      as.data.frame() %>% 
                       slice(which.min(.$CV))
}
Número óptimo de clases
AÑO n sd C.V.
2010 60 0.43 0.03
2020 23 0.35 0.02

Se toman en cuenta el número de clases que salen del los resultados del método iterativo. Utilizando la función strata.cumrootf() de la paquetería stratification con parámetros específicos y el número de clases (nclass) obtenido de min.strata.
- CV = 0.05: Establece el coeficiente de variación.
- Ls = 5: Establece el número de estratos.
- alloc = c(0.5, 0, 0.5): Define la asignación para la estratificación.
- nclass = min.strata[[i]][,1]: Establece el número de clases utilizando el primer valor de la fila con el menor CV en min.strata.

for(i in 1:2){
  assign(paste0("strata.DP2_", tablas[i]), strata.cumrootf(get(paste0("DP2_", tablas[i]))[,19],
                                                            CV = 0.05,
                                                             Ls = 5,
                                                              alloc = c(0.5, 0, 0.5), 
                                                               nclass = min.strata[[i]][,1]))
}

Se agregan los datos a la base original.

##Se agrega a la base DP2
for(i in 1:2){
  assign(paste0("DP2_", tablas[i]), data.frame(get(paste0("DP2_", tablas[i])) %>% 
                                                select(-IM_out),   # Se quita el índice ficticio
                                                 get(paste0("strata.DP2_", tablas[i]))[["stratumID"]]))
}

# Se cambian los nombres de las columnas 
for(i in 1:2){
  columns = get(paste0("DP2_", tablas[i]))
  colnames(columns) = c("CVE_LOC", "ENT", "NOM_ENT", "MUN", "NOM_MUN", "LOC", "NOM_LOC", "POB_TOT", "ANIO",
                        "ANALF", "SBASC", "OVSDE", "OVSEE", "OVSAE", "OVPT", "OVHAC", "OVSREF",
                        paste0("IM_", tablas[i]), paste0("GM_", tablas[i]))
  assign(paste0("DP2_", tablas[i]), columns)
  rm(columns)
}

# Se cambian los levels a los grados de marginación correspondientes
for(i in tablas){
  niveles = get(paste0("DP2_", i)) 
  levels(niveles[,19]) = c("Muy alto", "Alto", "Medio", "Bajo", "Muy bajo")
  assign(paste0("DP2_", i), niveles)
}

Límites de los estratos

Se crea un data frame llamado limites que contiene los límites de ciertos intervalos para los años 2010 y 2020. Cada columna contiene una combinación de:
- El valor mínimo del índice de marginación (IM:) para el año correspondiente.
- Los valores de los límites de los estratos (bh) calculados previamente.
- El valor máximo del índice de marginación (IM_) para el año correspondiente.

limites <- data.frame("2010" = c(min(DP2_2010$IM_2010), strata.DP2_2010$bh, max(DP2_2010$IM_2010)),
                      "2020" = c(min(DP2_2020$IM_2020), strata.DP2_2020$bh, max(DP2_2020$IM_2020)))
Límite de los estratos
Muy alto Alto Medio Bajo Muy bajo
2010 [ 0 - 9.4 ] ( 9.4 - 12.84 ] ( 12.84 - 15.65 ] ( 15.65 - 18.15 ] ( 18.15 - 22.84 ]
2020 [ 0 - 15.48 ] ( 15.48 - 18.63 ] ( 18.63 - 21.14 ] ( 21.14 - 23.03 ] ( 23.03 - 26.18 ]

Índice normalizado

Otra forma de apreciar el índice de marginación es normalizando sus valores para ver objetivamente la evolución de cada unidad territorial (Somarriba et al. 2013). La normalización se realiza utilizando un cambio de escala conocido como normalización mínima-máxima. Con este procedimiento el índice de marginación se escala a valores relativos con un rango de entre cero y uno, lo cual permite su comparación numérica y le da una propiedad adicional al índice de marginación. Al mismo tiempo, la normalización determina el mismo sentido que el índice obtenido por el método DP2, donde los valores cercanos a cero implican mayor marginación.

El proceso de normalización consiste en:

\[{DP}_2normalizado=\frac{{DP}_2^i-\min({DP}_2)}{\max({DP}_2)-\min({DP}_2)},\] donde:

\(\circ \: {DP}_{2}^{i}\): es el valor del índice de marginación de la localidad \(i\),
\(\circ \: min ({DP}_{2})\): es el valor mínimo o peor escenario que puede tomar el índice, y
\(\circ \: max ({DP}_{2})\): es el valor máximo u objetivo que puede tomar el índice.

Desviación estándar de los indicadores simples

Varianza muestral insesgada
Estimado insesgado de la varianza poblacional

\[s^{2} = \frac{1}{n-1}\left(x_{i}-\bar{x}\right)^{2} = \frac{\sum_{i=1}^{n}(x_{i}^{2})}{n-1} - \frac{\sum_{i=1}^{n}(x_{i})^{2}}{(n-1)\: n } = \left(\frac{n-1}{n}\right)s_{n}^{2} \] Se calcula la desviación estándar muestral y su inversa para un conjunto de indicadores simples. Para cada elemento:
- Extrae las columnas 10 a 17 del data frame correspondiente (DP2_).
- Calcula la desviación estándar para cada una de estas columnas.
- Ajusta la desviación estándar para obtener la desviación estándar muestral.
- Calcula la inversa de la desviación estándar muestral.
- Almacena los resultados en un data frame dentro de la lista desvest.

# Desviación estándar de los indicadores
desvest <- NULL
for(i in 1:2){
desvest[[i]] <- as.matrix(apply(get(paste0("DP2_", tablas[i]))[10:17], MARGIN = 2, sd)) %>%
                 as.data.frame() %>%
                  rename("desvest" = "V1") %>%
                   dplyr::mutate(sd_muestral = .$desvest * (sqrt((dim(get(paste0("DP2_", tablas[i]))[10:17])[1] - 1)/dim(get(paste0("DP2_", tablas[i]))[10:17])[1]))) %>%
                    dplyr::mutate(desvest.inversa = 1/(.$sd_muestral))
}
Desviación estándar
Desviación estándar Desviación estándar muestral Desviación estandar m. inversa
ANALF 13.711 13.711 0.073
SBASC 20.237 20.237 0.049
OVSDE 20.678 20.678 0.048
OVSEE 21.384 21.384 0.047
OVSAE 31.613 31.613 0.032
OVPT 23.687 23.687 0.042
OVHAC 23.691 23.691 0.042
OVSREF 32.769 32.769 0.031

Escenarios extremos

Para este tipo de cálculo es necesario conocer los puntos más extremos que puede tomar el índice en el año de observación. De antemano, se sabe que cada indicador simple toma valores de cero a 100 y, además, el método DP2 ya proporcionó el orden de entrada de las variables. Usando estos criterios se estiman los puntos focales extremos que puede tomar el índice de marginación. Se sabe que la peor situación es cuando una unidad de análisis toca todos y cada uno de los valores mínimos del vector base de referencia común, esto sería el peor escenario de marginación y tomaría un valor de cero. En sentido contrario, el valor máximo sería la situación con la menor marginación.

Escenarios del mínimo y máximo valor en el índice DP2

Se calculan los valores mínimo y máximo del índice DP2 para diferentes escenarios y años. Para cada elemento, se calcula:
- Valor mínimo: Calcula la diferencia absoluta entre minRV_2010 y vector_minimo, ajusta con la inversa de la desviación estándar muestral y los factores de corrección, y suma las filas para obtener el DP2.
- Valor máximo: Calcula la diferencia absoluta entre minRV_2010 y un vector de ceros (vector_maximo), ajusta con la inversa de la desviación estándar muestral y los factores de corrección, y suma las filas para obtener el DP2.

minimo <- NULL
maximo <- NULL
## Mínimo valor del DP2
for(i in 1:2){
vector_minimo <- minRV_2010  
tabla <- abs(vector_minimo - minRV_2010) * desvest[[i]][["desvest.inversa"]] *
          get(paste0("ind_", tablas[i]))[["correction_factors"]][names(DP2_2020[10:17])] %>%
           t() %>%
            as.data.frame() 
minimo[[i]] <- data.frame(AÑO = paste(tablas[i]), Escenario = "Mínimo", tabla, DP2 = rowSums(tabla))
  
## Máximo valor del DP2   
vector_maximo <- rep(0, 8) # Cuando los indicadores valen cero 
tabla <- abs(vector_maximo - minRV_2010) * desvest[[i]][["desvest.inversa"]] *
          get(paste0("ind_", tablas[i]))[["correction_factors"]][names(DP2_2020[10:17])] %>%
           t() %>%
            as.data.frame() 

maximo [[i]] <- data.frame(AÑO = paste(tablas[i]), Escenario = "Máximo", tabla, DP2 = rowSums(tabla))
}

Índice normalizado

Se guarda la base de datos con el índice normalizado

Se calcula un nuevo indicador denominado `IMN para cada año, normalizando el índice DP2 entre sus valores mínimos y máximos.

for(i in 1:2){
min_DP2 <- minimo[[i]][["DP2"]]
max_DP2 <- maximo[[i]][["DP2"]]
assign(paste0("DP2_", tablas[i]), get(paste0("DP2_", tablas[i])) %>%
                                   dplyr::mutate(IMN = (get(paste0("IM_", tablas[i])) - min_DP2)/(max_DP2 -  min_DP2)))
}
Índice de marginación a nivel localidad, 2020
CVE_LOC ENT NOM_ENT MUN NOM_MUN LOC NOM_LOC POB_TOT AÑO ANALF SBASC OVSDE OVSEE OVSAE OVPT OVHAC OVSREF IM_2020 GM_2020 IMN_2020
010010001 01 Aguascalientes 001 Aguascalientes 0001 Aguascalientes 863 893 2020 1.4 19.2 0.0 0.1 0.1 0.5 14.5 3.5 24.962 Muy bajo 0.953
010010096 01 Aguascalientes 001 Aguascalientes 0096 Agua Azul 41 2020 6.5 51.6 7.3 0.0 29.3 0.0 14.6 4.9 22.655 Bajo 0.865
010010106 01 Aguascalientes 001 Aguascalientes 0106 Arellano 1 169 2020 7.1 39.1 0.9 0.0 0.6 0.8 26.0 7.9 23.538 Muy bajo 0.899
010010112 01 Aguascalientes 001 Aguascalientes 0112 Bajío los Vázquez 41 2020 10.3 65.5 0.0 0.0 0.0 0.0 12.2 0.0 23.292 Muy bajo 0.890
010010120 01 Aguascalientes 001 Aguascalientes 0120 Buenavista de Peñuelas 1 054 2020 6.4 35.7 0.5 0.1 0.4 0.4 26.4 5.0 23.776 Muy bajo 0.908
010010121 01 Aguascalientes 001 Aguascalientes 0121 Cabecita 3 Marías (Rancho Nuevo) 192 2020 6.5 41.3 0.0 0.0 0.0 2.6 24.5 0.0 23.780 Muy bajo 0.908
010010125 01 Aguascalientes 001 Aguascalientes 0125 Cañada Grande de Cotorina 493 2020 4.0 25.6 2.2 0.8 0.0 1.0 36.7 6.3 23.770 Muy bajo 0.908
010010126 01 Aguascalientes 001 Aguascalientes 0126 Cañada Honda [Estación] 536 2020 3.5 28.2 0.7 0.9 0.7 1.3 16.6 8.8 24.268 Muy bajo 0.927
010010127 01 Aguascalientes 001 Aguascalientes 0127 Los Caños 1 225 2020 3.8 47.8 1.4 0.3 1.2 0.6 18.9 4.1 23.731 Muy bajo 0.906
010010128 01 Aguascalientes 001 Aguascalientes 0128 El Cariñán 256 2020 5.9 35.1 0.0 0.0 0.0 0.0 28.1 2.3 23.888 Muy bajo 0.912
010010135 01 Aguascalientes 001 Aguascalientes 0135 El Cedazo (Cedazo de San Antonio) 322 2020 7.7 29.4 3.4 4.0 8.4 0.0 29.2 14.3 23.110 Muy bajo 0.883
010010138 01 Aguascalientes 001 Aguascalientes 0138 Centro de Arriba (El Taray) 1 172 2020 3.4 58.3 0.4 0.0 0.2 1.6 28.3 3.8 23.204 Muy bajo 0.886
010010139 01 Aguascalientes 001 Aguascalientes 0139 Cieneguilla (La Lumbrera) 997 2020 8.8 57.6 0.1 0.6 1.1 2.6 22.3 7.9 22.942 Bajo 0.876
010010141 01 Aguascalientes 001 Aguascalientes 0141 Cobos 11 2020 0.0 37.5 0.0 0.0 0.0 45.5 0.0 0.0 23.776 Muy bajo 0.908
010010144 01 Aguascalientes 001 Aguascalientes 0144 El Colorado (El Soyatal) 468 2020 2.4 39.1 1.3 0.4 3.8 0.4 26.5 1.7 23.846 Muy bajo 0.911
010010146 01 Aguascalientes 001 Aguascalientes 0146 El Conejal 1 081 2020 2.6 44.3 0.3 0.0 0.8 0.0 26.9 2.5 23.790 Muy bajo 0.909
010010157 01 Aguascalientes 001 Aguascalientes 0157 Cotorina de Abajo 55 2020 5.7 45.7 0.0 0.0 5.5 3.6 0.0 3.6 24.141 Muy bajo 0.922
010010162 01 Aguascalientes 001 Aguascalientes 0162 Coyotes 318 2020 5.6 29.0 0.0 0.0 2.2 1.3 31.8 11.3 23.614 Muy bajo 0.902
010010170 01 Aguascalientes 001 Aguascalientes 0170 Cuauhtémoc (Las Palomas) 468 2020 2.6 41.3 1.8 0.0 4.2 2.9 24.1 9.4 23.525 Muy bajo 0.899
010010171 01 Aguascalientes 001 Aguascalientes 0171 Los Cuervos (Los Ojos de Agua) 419 2020 10.0 45.7 0.2 0.5 0.2 1.2 29.1 1.2 23.302 Muy bajo 0.890
010010183 01 Aguascalientes 001 Aguascalientes 0183 Los Dolores 11 2020 0.0 42.9 0.0 63.6 63.6 0.0 27.3 63.6 18.477 Alto 0.706
010010190 01 Aguascalientes 001 Aguascalientes 0190 El Duraznillo 354 2020 10.8 49.6 0.8 0.0 0.0 0.8 34.7 5.9 22.838 Bajo 0.872
010010191 01 Aguascalientes 001 Aguascalientes 0191 Los Durón 144 2020 13.7 52.6 0.7 0.0 0.0 0.0 33.3 0.0 22.848 Bajo 0.873
010010209 01 Aguascalientes 001 Aguascalientes 0209 La Fortuna 37 2020 13.6 68.2 0.0 0.0 0.0 10.8 45.9 10.8 21.390 Bajo 0.817
010010212 01 Aguascalientes 001 Aguascalientes 0212 Lomas del Gachupín 27 2020 4.3 8.7 0.0 0.0 0.0 0.0 0.0 14.8 25.241 Muy bajo 0.964

<>

#Tabla final
for(i in tablas){
save(get(paste0("DP2_", i)), file = paste0(here::here(), "/Output/IML_", i, ".RData"))
}

Validación de datos

Se crea en una lista que contiene el resumen del método DP2 para todos los años

for(i in tablas){
List_DP2 <- mget(paste0("ind_", tablas))
}

Orden de entrada de las variables

Se crea un data.frame de acuerdo al orden de importancia de las variables para todos los años
Dependiendo del proceso, el DP2 adoptará diferentes valores. Por lo tanto, es importante que el método de como resultado un orden de entrada único de los indicadores parciales.

Variables_sort <- NULL
for(i in 1:2){
Variables_sort[i] <- as.data.frame(lapply(List_DP2, function(x) get(paste0("ind_", tablas[i]))$variables_sort))
}

Variables_sort <- do.call(cbind.data.frame, Variables_sort)
colnames(Variables_sort) <- c("2010", "2020")
Variables sort
2010 2020
OVSREF OVSREF
ANALF OVPT
OVPT ANALF
OVSEE OVSEE
SBASC OVSDE
OVSDE SBASC
OVHAC OVHAC
OVSAE OVSAE

Coeficiente de correlación

El coeficiente de correlación es una medida que se utiliza para jerarquizar a los indicadores simples de acuerdo con el grado de correlación absoluta con respecto al indicador sintético resultante, es decir, ayuda a visualizar que variable tiene un mejor o peor apego con el fenómeno.

Se crea un data.frame de acuerdo a la correlación de cada variable con el indicador sintético (DP2) para todos los años

cor.coeff <- NULL
cor.coeff <- lapply(1:2, function(i) data.frame(rownames(get(paste0("ind_", tablas[i]))[["cor.coeff"]]),
                                                 get(paste0("ind_", tablas[i]))$cor.coeff))
cor.coeff <- do.call(cbind.data.frame, cor.coeff)
colnames(cor.coeff) <- c("Ind_2010", "2010", "Ind_2020", "2020")
Correlation Coefficient
Ind 2010 Ind 2020
ANALF 0.700 ANALF 0.705
SBASC 0.665 SBASC 0.633
OVSDE 0.627 OVSDE 0.648
OVSEE 0.685 OVSEE 0.665
OVSAE 0.566 OVSAE 0.549
OVPT 0.695 OVPT 0.748
OVHAC 0.600 OVHAC 0.591
OVSREF 0.817 OVSREF 0.818

Factor de corrector

El factor corrector, como se mencionó anteriormente, indica la proporción de información con la que contribuye el indicador simple al nuevo índice sintético, además, evita la duplicidad e incorpora información útil que retiene cada indicador simple.

Se crea un data.frame de acuerdo al factor corrector de cada indicador parcial para todos los años

correction_factors <- NULL
for(i in 1:2){
correction_factors[i] <- as.data.frame(lapply(List_DP2, function(x) get(paste0("ind_", tablas[i]))$correction_factors))
}
###Intetar de pegar el nombre de la columna 
correction_factors <- do.call(cbind.data.frame, c(Variables_sort, correction_factors)) %>%
                        subset(., select = c(1, 3, 2, 4))
colnames(correction_factors) <- c("Ind_2010", "2010", "Ind_2020", "2020")
Correction Factors
Ind 2010 Ind 2020
OVSREF 1.0000 OVSREF 1.0000
ANALF 0.7514 OVPT 0.6602
OVPT 0.7139 ANALF 0.7067
OVSEE 0.5638 OVSEE 0.6476
SBASC 0.6336 OVSDE 0.7063
OVSDE 0.7424 SBASC 0.6141
OVHAC 0.7118 OVHAC 0.7157
OVSAE 0.8195 OVSAE 0.8498

Coeficiente de Discriminación

El coeficiente de discriminación de Ivanovic mide el poder discriminante de la variable \(j\) en el conjunto de observaciones \(i\).

\[CD_{j}=\frac{2}{m\left(m-1\right)}\sum_{i,l>i}^{k_{j}}m_{ij}m_{lj}\left|\frac{x_{ij}-x_{lj}}{{\overline{X}}_{i}}\right|\]

donde:

\(\circ\:m_{ij}\): El número de observaciones de la variable \(x_{j}\)
\(\circ\:k_{j}\): El número de diferentes valores que toma \(x_{i}\) en el conjunto \(j\).

Esta medida está comprendida entre \([0, 2]\). Si una variable toma el mismo valor para todos los estados, el CD vale cero, indicando que posee un valor nulo de poder discriminante. Por el contrario, si una variable toma el valor teórico de máximo poder discriminante, el discriminante de la variable es total.

Se crea un data.frame de acuerdo al Coeficiente de discriminación (CD) de cada indicador parcial para todos los años

discrimination_coefficient <- NULL
discrimination_coefficient <- lapply(1:2, function(i) data.frame(names(get(paste0("ind_", tablas[i]))[["discrimination.coefficient"]]),
                                                                 get(paste0("ind_", tablas[i]))$discrimination.coefficient))

discrimination_coefficient <- do.call(cbind.data.frame, discrimination_coefficient)
colnames(discrimination_coefficient) <- c("Ind_2010", "2010", "Ind_2020", "2020")
Discrimination Coefficient
Ind 2010 Ind 2020
ANALF 0.879 ANALF 0.971
SBASC 0.297 SBASC 0.405
OVSDE 1.404 OVSDE 1.615
OVSEE 1.577 OVSEE 1.757
OVSAE 1.013 OVSAE 1.540
OVPT 1.260 OVPT 1.406
OVHAC 0.544 OVHAC 0.671
OVSREF 0.908 OVSREF 1.099

“Cantidad de Información Global de Ivanovic Pena Relativa Individual”

\[\alpha_{i}=\frac{CD_{i}\left(1-R^{2}_{i,i-1,...,1} \right)}{\sum_{i=1}^{n}CD_{i} \left(1-R^{2}_{i,i-1,...,1} \right)}\] Esta medida, comprendida entre 0 y 1, combina la información útil y el poder discriminante de cada indicador simple y mide la cantidad de información (combinada) relativa que aporta individualmente cada indicador simple, cuando entra de forma ordenada a formar parte del indicador sintético DP2. La suma de todos los valores de \(\alpha_{i}\) es la unidad. [Zarsosa 1996, págs 158-174]

alpha <- NULL
for(i in 1:2){
alpha[[i]] <- sapply(1:length(Indicadores), function(x)(get(paste0("ind_", tablas[i]))[["correction_factors"]][x] * get(paste0("ind_", tablas[i]))[["discrimination.coefficient"]][x]) /                                                         sum(get(paste0("ind_", tablas[i]))[["correction_factors"]] * get(paste0("ind_", tablas[i]))[["discrimination.coefficient"]]))
}
Cantidad de Información Global de Ivanovic Pena Relativa Individual
Ind 2010 Ind 2020
OVSREF 0.154 OVSREF 0.141
ANALF 0.039 OVPT 0.039
OVPT 0.176 ANALF 0.166
OVSEE 0.156 OVSEE 0.165
SBASC 0.113 OVSDE 0.158
OVSDE 0.164 SBASC 0.125
OVHAC 0.068 OVHAC 0.070
OVSAE 0.131 OVSAE 0.136

Resumen

Nacional: Población y unidades geograficas según el índice de marginación, 2010-2020
Grados 2010 2020
Población 2010 Localidades Población 2020 Localidades
Muy alto 906 272 12 926 1 181 937 13 256
Alto 3 384 542 19 028 3 485 906 15 985
Medio 7 523 759 26 543 7 774 958 25 294
Bajo 15 663 183 30 119 18 152 743 31 615
Muy bajo 84 807 374 20 930 95 385 177 24 089
Total 112 285 130 109 546 125 980 721 110 239

La tabla presenta una comparación temporal del grado de marginación a nivel de localidades en México, desagregada por el grado de marginación para los años 2010 y 2020.

Observaciones Clave

2.- Disminución en Grados Medio y Alto: 

La población en grados de marginación Medio y Alto muestra una tendencia a la baja. En 2010, el 6.7% de la población residía en localidades con grado de marginación Medio, disminuyendo al 6.2% en 2020. Para el grado Alto, la población disminuyó del 3.0% en 2010 al 2.8% en 2020.

3.- Estabilidad en Grado Muy Bajo: 

La población en el grado de marginación Muy Bajo se mantuvo relativamente estable, con un ligero incremento. En 2010, el 75.5% de la población residía en localidades con este grado de marginación, aumentando ligeramente al 75.7% en 2020.

4.- Comparación entre Grados Muy Alto y Alto vs. Muy Bajo y Bajo: 

En términos generales, la mayoría de la población reside en localidades con grados de marginación Muy Bajo y Bajo. En 2010, el 89.4% de la población se encontraba en estos grados, aumentando ligeramente al 90.1% en 2020. Por otro lado, la población en grados de marginación Muy Alto y Alto representa una proporción mucho menor, con el 3.8% en 2010 y una ligera disminución al 3.7% en 2020.

En resumen, la mayoría de la población reside en localidades con grados de marginación Muy Bajo y Bajo, representando más del 89% de la población en los años considerados. La población en grados de marginación Muy Alto y Alto, aunque ha tenido un pequeño incremento, sigue representando una porción mucho menor de la población total.

En el escenario general, entre 2010 y 2020, se observa que la mayor parte de la población en México vive en localidades con grados de marginación Muy Bajo y Bajo, abarcando más del 89% de la población en ambos años. Esto indica una concentración significativa de la población en áreas con menores niveles de marginación. Sin embargo, hay un ligero aumento en la población que reside en localidades con un grado de marginación Muy Alto, lo cual podría ser motivo de mesura por los incrementos de población en estas localidades. En contraste, las localidades con grados de marginación Medio y Alto han visto una disminución en su proporción de la población total, lo que sugiere una leve mejora en esos niveles de marginación. En general, la tendencia muestra una estabilidad en los grados de marginación Muy Bajo y una pequeña reducción en los grados Alto y Medio, mientras que los grados Muy Alto y Bajo han visto incrementos en sus proporciones de población.

Mapa a nivel localidad

Comparación en el tiempo

Referencias

Dalenius, T. (1950). The problem of optimum stratification. Scandinavian Actuarial J., 3-4, 203-13. Recuperado de: https://doi.org/10.1080/03461238.1950.10432042
__________ y Hodges, J. L., Jr. (1959). Minimum variance stratification. Journal of the American Statistical Association, 54, 88-101.
Gunning, P. y Horgan, J. M. (2004). A new algorithm for the construction of stratum boundaries in skewed populations. Survey Methodology, 30 (2), 159–166.

Pena Trapero, J. B. (1977). Problemas de la medición del bienestar y conceptos afines. Una aplicación al Caso Español. I. N. E: Madrid.

Somarriba, N. y Pena, B. (2009). Synthetic Indicators of Quality of Life in Europe. Social Indicators Research. Recuperado de: https://doi.org/10.1007/s11205-008-9356-y
__________, Zarzosa, P. y Pena, T. (2013). La calidad de vida en la Unión Europea. Un análisis temporal por medio de indicadores sintéticos. Congreso de la Asociación Española de Ciencia Regional. XXXIX Reunión de Estudios Regionales. Smart regions for a smarter growth strategy: new challenges of Regional Policy and potentials of cities to overcome a worldwide economic crisis. Recuperado de: https://old.reunionesdeestudiosregionales.org/Oviedo2013/htdocs/pdf/p851.pdf

Zarzosa, P. (1996). Aproximación a la medición del bienestar social. Secretario de Publicaciones: Valladolid.
__________. (2009). Estimación de la pobreza en las comunidades autónomas españolas, mediante la distancia DP2 de Pena. Estudios de Economía Aplicada, 27 (2), 397–416. __________. (2012). The Social Welfare in Spain before the Crisis: Territorial and Chronological Analysis. International Journal of Advances in Management and Economics 1 (4), 165-171.
__________ y Somarriba, N. (2013). An Assessment of Social Welfare in Spain: Territorial Analysis Using a Synthetic Welfare Indicator. Social Indicators Research, 111, 1-23.

sesion_info <- devtools::session_info()
package loadedversion source
Cairo 1.6-1 CRAN (R 4.3.1)
corrplot 0.92 CRAN (R 4.3.1)
dplyr 1.1.3 CRAN (R 4.3.2)
extrafont 0.19 CRAN (R 4.3.0)
forcats 1.0.0 CRAN (R 4.3.1)
geojsonio 0.11.3 CRAN (R 4.3.1)
ggplot2 3.4.3 CRAN (R 4.3.1)
ggpubr 0.6.0 CRAN (R 4.3.1)
ggridges 0.5.6 CRAN (R 4.3.3)
gt 0.10.0 CRAN (R 4.3.1)
htmlwidgets 1.6.2 CRAN (R 4.3.1)
jsonlite 1.8.7 CRAN (R 4.3.1)
kableExtra 1.3.4 CRAN (R 4.3.1)
knitr 1.45 CRAN (R 4.3.2)
leaflet 2.2.2 CRAN (R 4.3.3)
leaflet.extras 1.0.0 CRAN (R 4.3.1)
leaflet.providers 2.0.0 CRAN (R 4.3.3)
lubridate 1.9.3 CRAN (R 4.3.2)
magrittr 2.0.3 CRAN (R 4.3.1)
mapview 2.11.0 CRAN (R 4.3.1)
openxlsx 4.2.5.2 CRAN (R 4.3.1)
p2distance 1.0.1 CRAN (R 4.3.1)
psych 2.3.9 CRAN (R 4.3.1)
purrr 1.0.1 CRAN (R 4.3.1)
readr 2.1.4 CRAN (R 4.3.1)
readxl 1.4.3 CRAN (R 4.3.1)
rgdal 1.6-7 CRAN (R 4.3.1)
showtext 0.9-6 CRAN (R 4.3.1)
showtextdb 3.0 CRAN (R 4.3.1)
sp 2.1-0 CRAN (R 4.3.1)
stratification 2.2-7 CRAN (R 4.3.0)
stringr 1.5.0 CRAN (R 4.3.1)
sysfonts 0.8.8 CRAN (R 4.3.1)
tibble 3.2.1 CRAN (R 4.3.1)
tidyr 1.3.0 CRAN (R 4.3.1)
tidyverse 2.0.0 CRAN (R 4.3.1)